1. Field of the Invention
This invention relates to data transmission and more particularly relates to fast and reliable transmission of files from one computer system to another computer system.
2. Discussion of the Related Art
A common protocol for computer networks is TCP/IP, which is the protocol used on the Internet. TCP stands for Transmission Control Protocol, and IP stands for Internet Protocol. TCP is a transport protocol that is responsible for end-to-end delivery of information across an internetwork (i.e., a network of networks).
File Transfer Protocol (FTP) may run as an application on top of TCP. FTP may support point-to-point file transfers. FTP may also depend on TCP for reliable delivery as TCP is a connection-oriented acknowledged transport protocol.
Connection-oriented implies that TCP first establishes a connection between two systems that intend to exchange data. Since most networks are built on shared media (for example, several systems sharing the same cabling), it may be necessary to break data into manageable pieces so that no two communicating computers monopolize the network. These pieces may be called packets. When an application sends a message (file or data) to TCP for transmission, TCP may break the message into packets, sized appropriately for the network, and send the packets over the network.
Because a single message is often broken into many packets, TCP marks these packets with sequence numbers before sending them across the network. The sequence numbers allow the receiving system to properly reassemble the packets into the original message. Being able to reassemble the original message is not enough, as the accuracy of the data should be verified. TCP may accomplish this by computing a checksum. The checksum is a mathematical computation applied (by the sender) to the data contained in the TCP packet. The receiving system may perform the same calculation on the received data and compare the result with the checksum that the sending system computed. If the results match, then the receiving system may send an acknowledgment (ACK) back to the originating system (or sending system). If the results do not match, then the receiving system may ask the sending system to resend the packet.
TCP may also use port IDs to specify which application running on the system is sending or receiving the data. The port ID, checksum, and sequence number may be inserted into the TCP packet in a section called the header. The header is at the beginning of the packet containing this and other “control” information for TCP.
One problem with file transfers involves the length of time to transfer a file. For example, if one desires to transfer a file (such as a 2 Gigabyte file) across a latent network of great distance (such as between North America and Australia), then upwards of 20 to 40 hours may be needed to complete the total transfer of the file. This is due in part because it may take approximate 500 milliseconds for transmission of a packet and the return receipt of the acknowledgement back to the originating system. It is therefore desirable to speed up the file transfer time.